It works as per it's implementation. Since the
and operator is performing a mask between the two sides. It's expecting that both sides (when used in this context after an IF) are going to be the result of some comparison. But they're not here. So we're ANDing's the raw bit patterns together.
The AND rule shows us that a bit is only retained only when it's present in both sides. So the expression 2 and 4 will result in zero. The IF statement will treat this as a failed match and skip the over the IF/ENDIF block and continue on.