This has nothing to do with associativity (which comes into play in type expressions a == b == c). What are you asking about is the evaluation order of the operands of the operator. With some explicit exceptions, this is not intentionally indicated in C ++. This means that there is no guarantee there will first be evaluated aor bin a == b.
Exceptions (for which the evaluation procedure is guaranteed):
- ( ).
|| && ( , )., .?: , .
, &&, || , , . .