diff --git a/src/Field/BasicField.php b/src/Field/BasicField.php
index 7158b73b39a615dd7fec72c6a45cb584aaaf2cca..54ef3cc1622524a8645ccd1f5ad49bbe467a552b 100644
--- a/src/Field/BasicField.php
+++ b/src/Field/BasicField.php
@@ -3,6 +3,7 @@
 namespace WPDesk\Forms\Field;
 
 use WPDesk\Forms\Field;
+use WPDesk\Forms\Form\FormWithFields;
 use WPDesk\Forms\Sanitizer\NoSanitize;
 use WPDesk\Forms\Serializer;
 use WPDesk\Forms\Serializer\NoSerialize;
@@ -25,6 +26,7 @@ abstract class BasicField implements Field {
 
 	public function __construct() {
 		$this->meta['class'] = [];
+		$this->meta['priority'] = 10;
 	}
 
 	public function get_label() {
@@ -299,12 +301,16 @@ abstract class BasicField implements Field {
 		return $this;
 	}
 
-	/** @return int */
-	public function get_priority() {
-		return $this->meta['priority'] ?? 10;
+	public function get_priority(): int {
+		return $this->meta['priority'];
 	}
 
-	public function set_priority( int $priority ) {
+	/**
+	 * Fields are sorted by lowest priority value first, when getting FormWithFields
+	 *
+	 * @see FormWithFields::get_fields()
+	 */
+	public function set_priority( int $priority ): self {
 		$this->meta['priority'] = $priority;
 
 		return $this;
diff --git a/tests/integration/Form/FormWithFieldsTest.php b/tests/integration/Form/FormWithFieldsTest.php
index 9d8c2b2c267aa207a1659abe2374d87cd9e9db5c..165592dbc5b08efa1fad4a69dec9bae17cc3d5a8 100644
--- a/tests/integration/Form/FormWithFieldsTest.php
+++ b/tests/integration/Form/FormWithFieldsTest.php
@@ -21,10 +21,13 @@ class FormWithFieldsTest extends TestCase {
 		$this->form->add_fields(
 			[
 				( new InputTextField() )
-				->set_label('third'),
+				->set_label('fourth'),
 				( new SelectField() )
 				->set_label('second')
 				->set_priority(5),
+				( new SelectField() )
+				->set_label('third')
+				->set_priority(7),
 				( new InputNumberField() )
 				->set_label('first')
 				->set_priority(1)
@@ -38,8 +41,11 @@ class FormWithFieldsTest extends TestCase {
 			( new SelectField() )
 			->set_label('second')
 			->set_priority(5),
-			( new InputTextField() )
+			( new SelectField() )
 			->set_label('third')
+			->set_priority(7),
+			( new InputTextField() )
+			->set_label('fourth')
 		];
 
 		self::assertEquals($expected, $this->form->get_fields());