# Conditional Operators vs Logical Assignment Operators

This is just a little note to myself to remember that assigning the result of a conditional operation (`a = a && b;`) is not the same as using a logical assignment operator (`a &= b;`).

First: The conditional operators (`&&`, `||`) work on the boolean results of their operands – that is, the operands are evaluated as booleans and the operator performs a logical AND or a logical OR on the two boolean values.
In contrast, the logical assignment operators (`&=`, `|=`) perform bitwise AND and OR operations between the operands.

Second: The conditional operators will short-circuit, the assignment operators do not. In the statement

`a = a || b;`

if `a` initially evaluates to `false`, then `b` is not evaluated. Whereas in the statement

`a |= b;`

`b` will be evaluated whether `a` is `true` or `false`.

There are very few cases where the first difference is likely to matter, however, it is easy to get caught by the second difference.

Note: The null-conditional operators (`?.`, `?[]`) also short-circuit – which is what will make them useful – when/if I get upgraded to C# 6.0.