https://medium.com/tulisankhusni/understanding-basic-logic-in-programming-and-or-and-not-7cdf1f64a61f