# Operators

lists the operators in the Nix expression language, in order of precedence (from strongest to weakest binding).

## Operators

Syntax | Associativity | Description
--- | --- | ---
e `.` attrpath [ `or` def ] | none | Select attribute denoted by the attribute path attrpath from set e. (An attribute path is a dot-separated list of attribute names.) If the attribute doesn’t exist, return def if provided, otherwise abort evaluation.
e1 e2 | left | Call function e1 with argument e2.
`-` e | none | Arithmetic negation.
e `?` attrpath | none | Test whether set e contains the attribute denoted by attrpath; return `true` or `false`.
e1 `++` e2 | right | List concatenation.
e1 `*` e2, e1 `/` e2 | left | Arithmetic multiplication and division.
e1 `+` e2, e1 `-` e2 | left | Arithmetic addition and subtraction. String or path concatenation (only by `+`).
`!` e | none | Boolean negation.
e1 `//` e2 | right | Return a set consisting of the attributes in e1 and e2 (with the latter taking precedence over the former in case of equally named attributes).
e1 `<` e2, e1 `>` e2, e1 `<=` e2, e1 `>=` e2 | none | Arithmetic comparison.
e1 `==` e2, e1 `!=` e2 | none | Equality and inequality.
e1 `&&` e2 | left | Logical AND.
e1 `||` e2 | left | Logical OR.
e1 `->` e2 | none | Logical implication (equivalent to `!e1 || e2`).