From MSDN:
The predefined unary and binary operators and any user-defined operators that exist for value types may also be used by nullable types. These operators produce a null value if the operands are null; otherwise, the operator uses the contained value to calculate the result.
That’s why all the test are passed, including the last one – no matter what the operand value is, if another operand is null, then the result is null.