IIFEs give us an easy way to isolate variables within a function, and not globally - after which we can easily run the function immediately. Immediately invoked function expressions, or IIFE, are functions that are run as soon as you define the function. They are also useful for running async functions when a top level `await` is not available. The defensive semi-colon is added to the start of IIFE code to avoid a weird issue where the previous line doesn't have a semi-Colon, the function's last line will be used as the function name.