Units are a collection of variables and methods which are used to extend the functionality of Modern Pascal. To optimize performance, units are only included at run-time based upon the uses claus. The built-in units provide additional functionality to your application when needed.
Modern Pascal does not read your code and guess what units you need. However, Modern Pascal does automatically load ancestor units for you. For example, if you are using the TStringList object found in the Strings unit, but you forget to reference the Classes unit, Modern Pascal understands this relationship and loads Classes for you automatically. This helps you from having to remember the unit hierarchy and simply focus on the units which give you the functionality you are needing.