---
page_title: Expressions - Configuration Language
description: >-
  An overview of expressions to reference or compute values in Terraform
  configurations, including types, operators, and functions.
---

# Expressions

> **Hands-on:** Try the [Create Dynamic Expressions](/terraform/tutorials/configuration-language/expressions?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.

_Expressions_ refer to or compute values within a configuration.
The simplest expressions are just literal values, like `"hello"` or `5`,
but the Terraform language also allows more complex expressions such as
references to data exported by resources, arithmetic, conditional evaluation,
and a number of built-in functions.

Expressions can be used in a number of places in the Terraform language,
but some contexts limit which expression constructs are allowed,
such as requiring a literal value of a particular type or forbidding
[references to resource attributes](/terraform/language/expressions/references#references-to-resource-attributes).
Each language feature's documentation describes any restrictions it places on
expressions.

You can experiment with the behavior of Terraform's expressions from
the Terraform expression console, by running
[the `terraform console` command](/terraform/cli/commands/console).

The other pages in this section describe the features of Terraform's
expression syntax.

- [Types and Values](/terraform/language/expressions/types)
  documents the data types that Terraform expressions can resolve to, and the
  literal syntaxes for values of those types.

- [Strings and Templates](/terraform/language/expressions/strings)
  documents the syntaxes for string literals, including interpolation sequences
  and template directives.

- [References to Values](/terraform/language/expressions/references)
  documents how to refer to named values like variables and resource attributes.

- [Operators](/terraform/language/expressions/operators)
  documents the arithmetic, comparison, and logical operators.

- [Function Calls](/terraform/language/expressions/function-calls)
  documents the syntax for calling Terraform's built-in functions.

- [Conditional Expressions](/terraform/language/expressions/conditionals)
  documents the `<CONDITION> ? <TRUE VAL> : <FALSE VAL>` expression, which
  chooses between two values based on a bool condition.

- [For Expressions](/terraform/language/expressions/for)
  documents expressions like `[for s in var.list : upper(s)]`, which can
  transform a complex type value into another complex type value.

- [Splat Expressions](/terraform/language/expressions/splat)
  documents expressions like `var.list[*].id`, which can extract simpler
  collections from more complicated expressions.

- [Dynamic Blocks](/terraform/language/expressions/dynamic-blocks)
  documents a way to create multiple repeatable nested blocks within a resource
  or other construct.

- [Type Constraints](/terraform/language/expressions/type-constraints)
  documents the syntax for referring to a type, rather than a value of that
  type. Input variables expect this syntax in their `type` argument.

- [Version Constraints](/terraform/language/expressions/version-constraints)
  documents the syntax of special strings that define a set of allowed software
  versions. Terraform uses version constraints in several places.
