Operator precedence
Priority | Description | Operators | Comments | |
---|---|---|---|---|
15
highest |
Template instantiation | ! | Top-level ',' in rhs expression treated specially. Cannot be chained | |
14.5 | Lambda abstraction | => | Not a real operator, occurs twice, this is binding power to the left. | |
14 | Postfix operators | . ++ -- ( [ | ( and [ treat top-level ',' in rhs expression specially and require balanced ) or ] in order to be completed | |
13 | Power operator | ^^ | Right-associative | |
12 | Unary operators | & ++ -- * + - ! ~ cast | ||
11 | - | * / % | ||
10 | - | + - ~ | Binary '~' is the concatenation operator | |
9 | Bit shift operators | << >> >>> | ||
6a | Comparison operators | == != > < >= <= !> !< !>= !<= <> !<> <>= !<>= in !in is !is | Unordered with respect to bitwise operators, cannot be chained. | |
8b | Bitwise AND | & | Unordered with respect to comparison operators | |
7b | Bitwise XOR | ^ | Unordered with respect to comparison operators | |
6b | Bitwise OR | | | Unordered with respect to comparison operators | |
5 | Logical AND | && | Short-circuit | |
4 | Logical OR | || | Short-circuit | |
3 | Conditional operator | ?: | Right-associative | |
2 | Assignment operators | = -= += <<= >>= >>>= = *= %= ^= ^^= ~= | Right-associative | |
1.5 | Lambda abstraction | => | Not a real operator, occurs twice, this is binding power to the right | |
1 | Comma operator | , | Not to be confused with other uses of ',', though their precedence is the same | |
0
lowest |
Range separator | .. | Not a real operator, hardwired into syntax at specific points |