# Operators in the Flux language

Flux includes the following types of operators:

Also see:

## Arithmetic operators

Arithmetic operators take two numerical values (either literals or variables) and perform a calculation that returns a single numerical value.

OperatorDescriptionExampleResult
`+`Addition`1 + 1``2`
`-`Subtraction`3 - 2``1`
`*`Multiplication`2 * 3``6`
`/`Division`9 / 3``3`
`^`Exponentiation`2 ^ 3``8`
`%`Modulo`10 % 5``0`

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.

## Comparison operators

Comparison operators compare expressions and return true or false based on the comparison.

OperatorDescriptionExampleResult
`==`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`

The `>` and `<` operators also compare the lexicographic order of strings.

## Logical operators

OperatorDescription
`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.

OperatorDescriptionExampleMeaning
`=`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.

OperatorDescriptionExamplesMeaning
`|>`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 for examples of function operators is use.

## String Operators

String operators concatenate or compare string values.

OperatorDescriptionExamplesResult
`+`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.

OperatorDescription
`[ ]`List / array
`{ }`Record
`""`String

## Miscellaneous operators

OperatorDescriptionExample
`( )`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.

PrecedenceOperatorDescription
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

### Introducing InfluxDB Clustered

A highly available InfluxDB 3.0 cluster on your own infrastructure.

InfluxDB Clustered is a highly available InfluxDB 3.0 cluster built for high write and query workloads on your own infrastructure.

InfluxDB Clustered is currently in limited availability and is only available to a limited group of InfluxData customers. If interested in being part of the limited access group, please contact the InfluxData Sales team.

### The future of Flux

Flux is going into maintenance mode. You can continue using it as you currently are without any changes to your code.

Flux is going into maintenance mode and will not be supported in InfluxDB 3.0. This was a decision based on the broad demand for SQL and the continued growth and adoption of InfluxQL. We are continuing to support Flux for users in 1.x and 2.x so you can continue using it with no changes to your code. If you are interested in transitioning to InfluxDB 3.0 and want to future-proof your code, we suggest using InfluxQL.

For information about the future of Flux, see the following:

### State of the InfluxDB Cloud Serverless documentation

InfluxDB Cloud Serverless documentation is a work in progress.

The new documentation for InfluxDB Cloud Serverless is a work in progress. We are adding new information and content almost daily. Thank you for your patience!

If there is specific information you’re looking for, please submit a documentation issue.