Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialGeorge Columbu
2,076 PointsI'm confused about the condition
I dont understand the condition he is using very well. His condition is (! correctGuess) i tryed it with (correctGuess === false) and it works the same as the initial variable correctGuess = false. Given my condition i understand exactly what's going on in the code. But how is (! correctGuess) the same with (correctGuess === false)? can someone help me
5 Answers
Emmanuel C
10,636 PointsThe exclamation mark or "!" is the logical NOT operator, You can read that statement as If Not correctGuess. Basically it, If correctGuess is NOT true. If the variable correctGuess is false, then that mean its Not true, which makes the whole if statement true.
if(correctGuess === false) // check if correctGuess is equal to false
if(!correctGuess) //check if correctGuess is NOT true
if(correctGuess !== true) // check if correctGuess is Not equal to true
They are doing the same thing. I hope this makes sense.
Joseph Anson
14,448 PointsI get that it flips it to the opposite but from what I understand, if it's already set to false then the opposite will be true? So
var correctGuess = false;
console.log( ! correctGuess ); = true?
correctGuess would become true? But we need it to stay false until the if statement changes it to true. I really don't understand. Help!
Emmanuel C
10,636 PointsThe variable correctGuess itself is false, but when you have the NOT operator your essentially asking if the correctGuess is NOT true, and because correctGuess is in fact false, so its not true, then its makes the entire statement true. But it does not reassign the variable.
Try to see conditions as asking a question. If you see
if(correctGuess){}
Then youre basically asking, is the correctGuess variable equal to true?
But if you see
if(!correctGuess) {}
Then youre asking, is the correctGuess variable NOT equal to true?
Johnnt Trav
Courses Plus Student 1,295 PointsI could be wrong but you're basically commanding the while loop to keep on looping if
correctGuess === false
It's just like saying
if(correctGuess === false) {
return true;
} else {
return false;
}
So you get true in return because correctGuess does equal false!
I get how that can be confusing. Even I was confused at first but it took some brainstorming. :)
Carl Evison
2,656 PointsThis confused me too, as it flips the boolean value to it's opposite. Doing this helped me understand it.
console.log( ! true); // returns false
console.log( ! false); // returns true
Hopefully that'll help someone else out.
Kishan P
9,921 PointsThink of like this way. Basically "!" is the logical NOT operator.
!TRUE MEANS ###NOT TRUE### MEANS FALSE
!FALSE MEANS ###NOT FALSE###MEANS TRUE