--- title: Operators in the Flux language list_title: Operators description: Flux supports many types of operators including arithmetic operators, comparison operators, function operators, and others. menu: flux_v0_ref: name: Operators parent: Flux specification weight: 110 aliases: - /influxdb/v2/reference/flux/language/operators/ - /influxdb/cloud/reference/flux/language/operators/ flux/v0/tags: [operators] --- Flux includes the following types of operators: - [Arithmetic operators](#arithmetic-operators) - [Comparison operators](#comparison-operators) - [Logical operators](#logical-operators) - [Assignment operators](#assignment-operators) - [Function operators](#function-operators) - [String Operators](#string-operators) - [Literal constructors](#literal-constructors) - [Miscellaneous operators](#miscellaneous-operators) _Also see:_ - [Operator precedence](#operator-precedence) ## Arithmetic operators Arithmetic operators take two numerical values (either literals or variables) and perform a calculation that returns a single numerical value. | Operator | Description | Example | Result | |:--------:|:----------- | ------- | ------ | | `+` | Addition | `1 + 1` | `2` | | `-` | Subtraction | `3 - 2` | `1` | | `*` | Multiplication | `2 * 3` | `6` | | `/` | Division | `9 / 3` | `3` | | `^` | Exponentiation | `2 ^ 3` | `8` | | `%` | Modulo | `10 % 5` | `0` | {{% note %}} In the current version of Flux, values used in arithmetic operations must be of the same numeric type (integer or float). Operations with values of different numeric types will result in a type error. {{% /note %}} ## Comparison operators Comparison operators compare expressions and return true or false based on the comparison. | Operator | Description | Example | Result | |:--------:|:----------- | ------- | ------ | | `==` | Equal to | `"abc" == "abc"` | `true` | | `!=` | Not equal to | `"abc" != "def"` | `true` | | `<` | Less than | `1 < 2` | `true` | | `>` | Greater than | `1 > 2` | `false` | | `<=` | Less than or equal | `1 <= 2` | `true` | | `>=` | Greater than or equal | `1 >= 2` | `false` | | `=~` | Equal to regular expression | `"abc" =~ /[a-z]*/` | `true` | | `!~` | Not equal to regular expression | `"abc" !~ /[0-9]*/` | `true` | {{% note %}} The `>` and `<` operators also [compare the lexicographic order of strings](#string-operators). {{% /note %}} ## Logical operators | Operator | Description | | :------: | :------------------------------------------------------------------------- | | `not` | Returns `true` if right operand is `false`. Otherwise, returns `false`. | | `exists` | Returns `false` if right operand is _**null**_. Otherwise, returns `true`. | | `and` | Returns `true` if both operands are true. Otherwise, returns `false`. | | `or` | Returns `true` if any operand is true. Otherwise, returns `false`. | #### Short-circuit evaluation Flux logical operators observe the short-circuiting behavior seen in other programming languages. The evaluation of the left-hand (LH) operand determines if the right-hand (RH) operand is evaluated. - When the operator is `and` and the LH operand evaluates to `false`, the evaluation returns `false` without evaluating the RH operand. - When the operator is `or` and the LH operand evaluates to `true`, the evaluation returns `true` without evaluating the RH operand. ## Assignment operators An assignment operator assigns a value to its left operand based on the value of its right operand. | Operator | Description | Example | Meaning | |:--------:|:----------- | ------- | ------- | | `=` | Assign value of left expression to right expression | `x = y` | x = y | ## Function operators Function operators facilitate the creation of functions and control the flow of data through operations. | Operator | Description | Examples | Meaning | |:--------: |:----------- | -------- | ------- | | |> | Pipe‑forward | data |> function() | Tables contained in the "data" variable are piped into the function. | | `<-` | Pipe‑receive | `tables=<-` | The "tables" variable or parameter is assigned to data piped into the operation. _This operator is used for any data type passed into a function; not just table data._ | | `=>` | Arrow | `(r) => r.tag1 == "tagvalue"` | The arrow passes a record or parameters into function operations. | | `()` | Function call | `top(n:10)` | Call the `top` function setting the `n` parameter to `10` and perform the associated operations. | --- _See [Define custom functions](/flux/v0/define-functions/) for examples of function operators is use._ --- ## String Operators String operators concatenate or compare string values. | Operator | Description | Examples | Result | |:--------:|:----------- | -------- | ------ | | `+` | Concatenation | `"ab" + "c"` | `"abc"` | | `<` | Less than in lexicographic order | `"ant" < "bee"` | `true` | | `>` | Greater than in lexicographic order | `"ant" > "bee"` | `false` | ## Literal constructors Literal constructors define fixed values. | Operator | Description | |:--------:| ----------- | | `[ ]` | List / array | | `{ }` | Record | | `""` | String | ## Miscellaneous operators | Operator | Description | Example | |:--------:|:----------- | ------- | | `( )` | Logical grouping | `r._value / (r._value * 2)` | | `,` | Sequence delimiter | `item1, item2, item3` | | `:` | Key-value separator | `{name: "Bob"}` | | `.` | Member access / dot reference | `r._measurement` | ## Operator precedence The table below outlines operator precedence. Operators with a lower number have higher precedence. | Precedence | Operator | Description | | :--------: | :----------------: | :----------------------------------- | | 1 | `a()` | Function call | | | `a[]` | Member or index access | | | `.` | Member access | | 2 | \|> | Pipe forward | | 3 | `() => 1` | FunctionLiteral | | 4 | `^` | Exponentiation | | 5 | `*` `/` `%` | Multiplication, division, and modulo | | 6 | `+` `-` | Addition and subtraction | | 7 | `==` `!=` | Comparison operators | | | `<` `<=` | | | | `>` `>=` | | | | `=~` `!~` | | | 8 | `not` | Unary logical operator | | | `exists` | Null check operator | | 9 | `and` | Logical AND | | 10 | `or` | Logical OR | | 11 | `if` `then` `else` | Conditional | {{< page-nav prev="/flux/v0/spec/expressions/" next="/flux/v0/spec/packages/" >}}