[SerializeField] is a Unity attribute placed before a field so it appears in the Inspector even when it is private. This is the preferred beginner pattern for tunable values and assigned references because the field can be edited in Unity without being publicly writable by other scripts. (course lab series, see source-csharp-unity-labs)
Use [SerializeField] private for values such as movement speed, prefab references, audio clips and manager references. Use public mainly for methods that other scripts need to call.
Related: unity-inspector-references, inspector, getcomponent-vs-inspector-references, csharp-variables-and-types