make expression type calculations more accurate
coerce binary shortcut intermediate values to bool