I am a bit puzzled why the output is a certain way on the following program.

```
 data a;
 input name$ lv @@;
 cards;
 Frank 1 Joan 2 Sui 3 Burt 4 Kelly . Juan 1
 ;
 data b;
 set a;
 if lv=.
 then expertise='?';
 else if lv=1 
       then expertise='L';
       else if lv=2 or 3 
            then expertise ='M';
            else expertise ='H';
 run;
 proc print data=b;
 run;

```

In the program above, I am expecting that the output for the observation containing Burt has expertise of value H, but for some reason it is M.

I was thinking that the if statement should be lv=(2 or 3) but when I do that now those that I am thinking that the lv= 2 and lv=3 whose expertise should equal M now becomes H as well. 

\*This is probably explained by the fact that the syntax is inappropriate, and lv is never (2 or 3) /*I am not sure why this does not cause an error*/ thus the ELSE statement is executed.

I have a feeling that I am not understanding how the ELSE is really working.

However, according to that logic then if the lv=2 part is recognized but the others are not, I am not sure why the lv= 3 and lv=4 does not produce an H.

My goal is to understand why the program runs as if there is no syntax error and why the output is what it is.