It is not quite true that any operation involving a null yields null. There are exceptions, in particular
when a null literal (or something that is very close to a null literal) is involved.
Examples:
null >> 22 >> nullnull & null(needs at least one operand that is not hard null)
Unusually this only applies to null literals; if you had a parameter/local that had a null value,
the expression would evaluate to null as expected.