diff --git a/docs/1b/ece124.md b/docs/1b/ece124.md
index 4bcfdbe..dd295fe 100644
--- a/docs/1b/ece124.md
+++ b/docs/1b/ece124.md
@@ -4,6 +4,44 @@
Please see [ECE 150: C++#Non-decimal numbers](/1a/ece150/#non-decimal numbers) for more information.
-## Logic gates
+## Binary logic
-!!! definition
+A **binary logic variable** is a variable that has exactly two states:
+
+- 0, or false (switch open)
+- 1, or true (switch closed)
+
+**Binary logic functions** are any function that satisfies the following type signature:
+
+```python
+BoolFunc = Callable[[bool | BoolFunc, ...], bool]
+```
+
+In other words:
+
+ - it must accept a number of booleans and/or other logic functions, and
+ - it must return exactly one boolean.
+
+These can be expressed via truth table inputs/outputs, algebraically, or via a logical circuit schematic.
+
+### Logical operators
+
+Operator precedence is () > NOT > AND > OR.
+
+The **AND** operator returns true if and only if **all** arguments are true.
+
+$$A\cdot B \text{ or }AB$$
+
+(Source: Wikimedia Commons)
+
+The **OR** operator returns true if and only if **at least one** argument is true.
+
+$$A+B$$
+
+(Source: Wikimedia Commons)
+
+The **NOT** operator returns the opposite of its singular input.
+
+$$\overline A \text{ or } A'$$
+
+(Source: Wikimedia Commons)