DEV Community

Cover image for Clear as the sun explanation of De Morgan's laws
Marat Latypov
Marat Latypov

Posted on • Edited on

Clear as the sun explanation of De Morgan's laws

Sometimes, novice developers struggle with basic logic expressions, especially De Morgan's laws. To help with this, I have prepared a simple explanation.

The following examples were made using a small React app that I created for this article. You can choose to download and play with it or not 😀️. The following text doesn't require the app installation.

Step 1. Where are we from

Ok. Let start with the basics. How looks a&&b result? I think everybody knows:

a && b

Step 2. Let's play with it

What if we negate b in this expression? Just imagine the column where b was true will changed to false, and vice versa. The matrix will be flipped horizontally, like reflection in a mirror!
a && b => a && !b

And if we negate a, it will be flipped vertically:
a && b => !a && b

Step 3. Try a little bit harder

What if we negate both a and b the same time? Right! The matrix will be flipped in both directions - horizontally and vertically:

a && b => !a && !b

Step 4. The Final

Nice, and what if we negate the entire expression after negating a and b? In that case the values in the matrix will change from true to false, and vice versa:

!a && !b => !(!a && !b)

But wait! It looks like matrix for a||b!

de Morgan's Law

Actually that's the de Morgan's Law

!(!a&&!b) === a||b or !a&&!b === !(a||b)

I hope this article was helpful.

Top comments (0)