!== and != return different results, I'll explain better with an example:
For the example A=1 and B=2
if(A==B) //returns false
if(A!=B) // returns true
if(!A==B) // returns false
In the third example the ! operator is used to check if A is equal to B. It should return true, because although A is not equal to B (resulting in a false) the ! operator should switch the result to true in a similar way that a negative will turn another negative into a positive.
Once again, I'm not sure if it's a bug or just something that was never planned in the first place, but "not false" should always equate to "true" in this case, it doesn't.
DM may be reading this as: if not A equals B. Then the statement is disregarding that "not A" can be any value except for "A", including B which would result in a true as well.
!A==B is the same as (!A)==B. If you want equivalence to !=, you need !(A==B).