Catching assignment is a major reason Yoda conditions are used, but there are others: In C++ the operator is invoked on the LHS operand. As constants are typically const (duh), or primitives, this limits the possibility of non-sensical operations. One example is = on a primitive literal, such as the common reason given (1 = a), but this will include operator=() const, or whatever operator is used for non-POD types.