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 |