You're forgetting the English language just because you're programming. You do know the difference between "and" and "or", right? Let's say that I have 5 people in front of me. They are 20, 22, 24, 26 and 28 years of age. If I say "if you're not 22 years old or you're not 26 years then stand behind me", what would you expect to happen? Obviously the people who are 20, 24 and 28 years old will stand behind me. The person who is 22 is not 24 years old so they will stand behind me, while the person who is 26 is not 22 years old so they will stand behind me also. That statement didn't exclude anyone at all.

How about some simple Boolean logic?

True OR True = True

True OR False = True

False OR True = True

False OR False = False

That's fairly obvious, right? So, the only way that your `if` statement is going to evaluate to False is if both conditions are False. Can you think of any value of shDesintation that will make both those conditions False? The only way the first one is going to be False is if shDesintation is equal to "AK-ALASKA" and the only way the second one will be False is if shDesintation is equal to "HI-HAWAII". How is one variable going to be equal to two different values at the same time?