Just to expand on that, “as lowercase” is not some kind of special directive on the comparison; it’s just taking the string and changing it to a lowercase form. When we use this to perform case-insensitive comparisons, we have to convert both sides of the comparison operation (or enter our literal string in the correct lowercase).
Comparing two strings in mixed-case results in a False
q: "hELlO" = "HeLlO"
A: False
T: 0.103 ms
I: singular boolean
By using the ‘as lowercase’ cast, we can convert the string to it’s all-lowercase form
q: "hELlO" as lowercase
A: hello
T: 0.087 ms
I: singular string
If we compare an all-lowercase string to a mixed-case string, it’s still False
q: "hELlO" as lowercase = "HeLlO"
A: False
T: 0.071 ms
I: singular boolean
But if we convert both strings to all-lowercase, they are now equivalent
q: "hELlO" as lowercase = "HeLlO" as lowercase
A: True
T: 0.037 ms
I: singular boolean
(we can also get the same effect with the ‘as uppercase’ cast, if you prefer to be shouty)
q: "hELlO" as uppercase = "HELLO"
A: True
T: 0.041 ms
I: singular boolean