When more than one logical operator is used in a condition, NOT is evaluated first, then AND, and finally OR. The best way to straighten this so there no confusion is to group the logical bulks with parentheses.
if(x=1 and (y=0 or y= null() ),'yes','no') as test
In your case I would also recommend to switch the y=null() with isnull(y) like this
if(x=1 and( y=0 or isnull(y)) ,'yes','no') as test