 Here's a Canadian postal code. It consists of alternating letters and digits with a space in between. The letter can be any uppercase letter except D, F, I, O, Q, U, W, and Z. If we want to write a program to validate Canadian postal codes, we'll need a method to see if we have a valid letter. We can't use isUpper because that would allow way too many characters that aren't in the range A through Z. We could write an expression that tests to see if we have any of the valid letters, but that's ugly. Or we could write it as all the letters A through Z except the ones that we don't want, but that's not much of an improvement. There must be a better way. That better way is the in operator. It returns true when the first operand is in the second operand. Let's do some examples. Is the letter O in the string AEOU? True. Is the letter H in the word when? Is the letter R in AEOU? No, it isn't. By the way, the first operand doesn't have to be a single letter. We can, for example, test to see if the word log is in the word blogger, and that's true. There's also a not in operator that returns true when the first operand isn't part of the second one. Is it true that X is not in AEOU? That's true. And again, we can use that with whole words. We can ask if the word big is not in the word smaller, and that comes back true. Now that we know this, we can rewrite our test for a valid Canadian postal code letter in a much more compact way. We'll set up a string of all the valid letters and ask if the character we're looking at is in those valid letters. If so, we return true. If not, we return false. We could also use not in by setting a string that has all of our excluded letters, and then check to see if the character is between A and Z, but not in our excluded letters list. And that's how you use the in and not in operators.