In Angular, computed signals let you create values derived from other signals. First, you create base signals with signal(). Then, you define a computed signal using computed() that depends on those base signals. When you access the computed signal, it runs its function and caches the result. If a base signal changes, the computed signal's cache is invalidated but it does not recompute immediately. It waits until you access it again, then it recalculates using the latest base signal values. This behavior helps optimize performance by avoiding unnecessary recalculations. The example code shows count starting at 1, doubleCount doubling it, then count changes to 3. The computed signal updates only when accessed after the change. This step-by-step trace helps beginners see how Angular's computed signals work internally.