Concept
A extends B ? X : Y chooses a type based on another type. With infer it can pull a piece out of a type, such as the element type of an array or the resolved type of a promise.
The tutor works through these with you, in conversation and code. A session ends when you have shown them, not when a video does.
A few lines that show Conditional types doing its job.
type Unwrap<T> = T extends Promise<infer U> ? U : T;
type A = Unwrap<Promise<number>>; // number
type B = Unwrap<string>; // string
type ElementOf<T> = T extends readonly (infer E)[] ? E : never;
type C = ElementOf<string[]>; // string
type NonNullish<T> = T extends null | undefined ? never : T;Forgetting that a conditional type distributes over a union: Unwrap<Promise<A> | B> is A | B. Wrap the checked type in a tuple, [T] extends [...], when you do not want that.
Your roadmap puts these before Conditional types, unless you already know them.
Once a session shows you understand Conditional types, it comes back for review. Each review takes a minute and tells the memory model how well you still know it.