https://blog.xjtag.com/2016/12/short-circuiting-logical-operators/