==! doesn't exist as such. It's a somewhat cryptic notation of == !
As spaces don't matter in those operations, you could just as easily write a --> b, which evaluates to a-- > b, but will look strange.
So, as to the question: "a" ==! " " will be parsed to "a" == !" ". Negation of a string is covered by casting, meaning any string but "0" and " " is, when casted, true.
Thus, the expression "a" == !" " will get transferred:
"a" == !" "
"a" == !false
"a" == true
And, as string "a" is not the same as bool true, this evaluates the whole expression to false.
So, what's the moral of the story? Don't let yourself be confused by missing or wrong placed spaces! :)