Operators are listed top to bottom, in descending precedence. Operators with the same number have equal precedence and the same associativity.
::[] () T(...) . -> ++ -- dynamic_cast static_cast reinterpret_cast const_cast typeid++ -- * & + - ! ~ sizeof new delete delete[]; the C-style cast notation, (T)...; (C++11 and above) sizeof... alignof noexcept.* and ->**, /, and %, binary arithmetic operators+ and -, binary arithmetic operators<< and >><, >, <=, >=== and !=&, the bitwise AND operator^|&&||?: (ternary conditional operator)=, *=, /=, %=, +=, -=, >>=, <<=, &=, ^=, |=throw, (the comma operator)The assignment, compound assignment, and ternary conditional operators are right-associative. All other binary operators are left-associative.
The rules for the ternary conditional operator are a bit more complicated than simple precedence rules can express.
? on its left or a : on its right than to any other operator. Effectively, the second operand of the conditional operator is parsed as though it is parenthesized. This allows an expression such as a ? b , c : d to be syntactically valid.? on its right than to an assignment operator or throw on its left, so a = b ? c : d is equivalent to a = (b ? c : d) and throw a ? b : c is equivalent to throw (a ? b : c).: on its left, so a ? b : c = d is equivalent to a ? b : (c = d).