Not quite. Everything you said was correct except for that first bit; == is not needed to check for truthy values, but it’s ideal if you need to handle strict equality. For example:
if yes then
if not yes then
if yes == true then
if yes == false then
if yes == nil then
These five examples are different.
First one: This will check is yes is truthy. The condition will pass for anything that isn’t either nil or false, as those will both evaluate to false.
Second one: not is negation, so it checks if yes is falsy. This means that nil and false will pass, but anything truthy will not.
Third one: This will check if yes is explicitly true. That means that only true will pass and anything else will be regarded as false, thus not passing (numbers, strings, false, nil, so on).
Fourth one: Same as above, but for false. Anything else (including nil) will be truthy for this and will not pass the conditional check.
Fifth one: Same as above, but for nil. Anything else (including false) will be truthy for this and will not pass the conditional check.