diff --git a/core/modules/comment/config/install/system.action.comment_delete_action.yml b/core/modules/comment/config/install/system.action.comment_delete_action.yml
index 035299e..cc9f107 100644
--- a/core/modules/comment/config/install/system.action.comment_delete_action.yml
+++ b/core/modules/comment/config/install/system.action.comment_delete_action.yml
@@ -7,4 +7,5 @@ id: comment_delete_action
 label: 'Delete comment'
 type: comment
 plugin: comment_delete_action
+weight: 0
 configuration: {  }
diff --git a/core/modules/comment/config/install/system.action.comment_publish_action.yml b/core/modules/comment/config/install/system.action.comment_publish_action.yml
index 7a47b2d..35d6103 100644
--- a/core/modules/comment/config/install/system.action.comment_publish_action.yml
+++ b/core/modules/comment/config/install/system.action.comment_publish_action.yml
@@ -7,4 +7,5 @@ id: comment_publish_action
 label: 'Publish comment'
 type: comment
 plugin: entity:publish_action:comment
+weight: 0
 configuration: {  }
diff --git a/core/modules/comment/config/install/system.action.comment_save_action.yml b/core/modules/comment/config/install/system.action.comment_save_action.yml
index 614cf4b..09cc927 100644
--- a/core/modules/comment/config/install/system.action.comment_save_action.yml
+++ b/core/modules/comment/config/install/system.action.comment_save_action.yml
@@ -7,4 +7,5 @@ id: comment_save_action
 label: 'Save comment'
 type: comment
 plugin: entity:save_action:comment
+weight: 0
 configuration: {  }
diff --git a/core/modules/comment/config/install/system.action.comment_unpublish_action.yml b/core/modules/comment/config/install/system.action.comment_unpublish_action.yml
index a1800b4..fa251ee 100644
--- a/core/modules/comment/config/install/system.action.comment_unpublish_action.yml
+++ b/core/modules/comment/config/install/system.action.comment_unpublish_action.yml
@@ -7,4 +7,5 @@ id: comment_unpublish_action
 label: 'Unpublish comment'
 type: comment
 plugin: entity:unpublish_action:comment
+weight: 0
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_delete_action.yml b/core/modules/node/config/install/system.action.node_delete_action.yml
index 97662dc..1759939 100644
--- a/core/modules/node/config/install/system.action.node_delete_action.yml
+++ b/core/modules/node/config/install/system.action.node_delete_action.yml
@@ -7,4 +7,5 @@ id: node_delete_action
 label: 'Delete content'
 type: node
 plugin: node_delete_action
+weight: -1
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_make_sticky_action.yml b/core/modules/node/config/install/system.action.node_make_sticky_action.yml
index 94a81bf..39fd746 100644
--- a/core/modules/node/config/install/system.action.node_make_sticky_action.yml
+++ b/core/modules/node/config/install/system.action.node_make_sticky_action.yml
@@ -7,4 +7,5 @@ id: node_make_sticky_action
 label: 'Make content sticky'
 type: node
 plugin: node_make_sticky_action
+weight: -7
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_make_unsticky_action.yml b/core/modules/node/config/install/system.action.node_make_unsticky_action.yml
index 6572963..6b28163 100644
--- a/core/modules/node/config/install/system.action.node_make_unsticky_action.yml
+++ b/core/modules/node/config/install/system.action.node_make_unsticky_action.yml
@@ -7,4 +7,5 @@ id: node_make_unsticky_action
 label: 'Make content unsticky'
 type: node
 plugin: node_make_unsticky_action
+weight: -6
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_promote_action.yml b/core/modules/node/config/install/system.action.node_promote_action.yml
index 7c45a42..019e430 100644
--- a/core/modules/node/config/install/system.action.node_promote_action.yml
+++ b/core/modules/node/config/install/system.action.node_promote_action.yml
@@ -7,4 +7,5 @@ id: node_promote_action
 label: 'Promote content to front page'
 type: node
 plugin: node_promote_action
+weight: -5
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_publish_action.yml b/core/modules/node/config/install/system.action.node_publish_action.yml
index 3e139bb..80f34b5 100644
--- a/core/modules/node/config/install/system.action.node_publish_action.yml
+++ b/core/modules/node/config/install/system.action.node_publish_action.yml
@@ -7,4 +7,5 @@ id: node_publish_action
 label: 'Publish content'
 type: node
 plugin: entity:publish_action:node
+weight: -3
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_save_action.yml b/core/modules/node/config/install/system.action.node_save_action.yml
index 1759c35..8cf0eaa 100644
--- a/core/modules/node/config/install/system.action.node_save_action.yml
+++ b/core/modules/node/config/install/system.action.node_save_action.yml
@@ -7,4 +7,5 @@ id: node_save_action
 label: 'Save content'
 type: node
 plugin: entity:save_action:node
+weight: 0
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_unpromote_action.yml b/core/modules/node/config/install/system.action.node_unpromote_action.yml
index cb290dd..20e4d2a 100644
--- a/core/modules/node/config/install/system.action.node_unpromote_action.yml
+++ b/core/modules/node/config/install/system.action.node_unpromote_action.yml
@@ -7,4 +7,5 @@ id: node_unpromote_action
 label: 'Remove content from front page'
 type: node
 plugin: node_unpromote_action
+weight: -4
 configuration: {  }
diff --git a/core/modules/node/config/install/system.action.node_unpublish_action.yml b/core/modules/node/config/install/system.action.node_unpublish_action.yml
index 0d5e35e..28f34f4 100644
--- a/core/modules/node/config/install/system.action.node_unpublish_action.yml
+++ b/core/modules/node/config/install/system.action.node_unpublish_action.yml
@@ -7,4 +7,5 @@ id: node_unpublish_action
 label: 'Unpublish content'
 type: node
 plugin: entity:unpublish_action:node
+weight: -2
 configuration: {  }
diff --git a/core/modules/node/src/Plugin/views/field/NodeBulkForm.php b/core/modules/node/src/Plugin/views/field/NodeBulkForm.php
index 4a6e219..0198a99 100644
--- a/core/modules/node/src/Plugin/views/field/NodeBulkForm.php
+++ b/core/modules/node/src/Plugin/views/field/NodeBulkForm.php
@@ -18,4 +18,24 @@ protected function emptySelectedMessage() {
     return $this->t('No content selected.');
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getBulkOptions($filtered = TRUE) {
+    $unsorted_options = parent::getBulkOptions($filtered);
+    $options = [];
+
+    // In order to sort get necessary elements.
+    foreach ($unsorted_options as $id => $label) {
+      $options[$id]['weight'] = $this->actions[$id]->getWeight();
+      $options[$id]['id'] = $id;
+      $options[$id]['label'] = $label;
+    }
+
+    // Sort and get "label" indexed by the "id".
+    uasort($options, ['Drupal\Component\Utility\SortArray', 'sortByWeightElement']);
+    $options = array_column($options, 'label', 'id');
+    return $options;
+  }
+
 }
diff --git a/core/modules/node/tests/src/Functional/Views/BulkFormTest.php b/core/modules/node/tests/src/Functional/Views/BulkFormTest.php
index 319890b..8ba8a03 100644
--- a/core/modules/node/tests/src/Functional/Views/BulkFormTest.php
+++ b/core/modules/node/tests/src/Functional/Views/BulkFormTest.php
@@ -90,6 +90,18 @@ protected function setUp($import_test_views = TRUE) {
     $this->drupalGet('test-node-bulk-form');
     $elements = $this->xpath('//select[@id="edit-action"]//option');
     $this->assertIdentical(count($elements), 8, 'All node operations are found.');
+
+    // Check the node operations order.
+    $order = TRUE;
+    $order &= $elements[0]['value'] == 'node_make_sticky_action';
+    $order &= $elements[1]['value'] == 'node_make_unsticky_action';
+    $order &= $elements[2]['value'] == 'node_promote_action';
+    $order &= $elements[3]['value'] == 'node_unpromote_action';
+    $order &= $elements[4]['value'] == 'node_publish_action';
+    $order &= $elements[5]['value'] == 'node_unpublish_action';
+    $order &= $elements[6]['value'] == 'node_delete_action';
+    $order &= $elements[7]['value'] == 'node_save_action';
+    $this->assertTrue($order, 'All node operations are in proper order.');
   }
 
   /**
diff --git a/core/modules/system/config/schema/system.schema.yml b/core/modules/system/config/schema/system.schema.yml
index a6f61b6..636b19f 100644
--- a/core/modules/system/config/schema/system.schema.yml
+++ b/core/modules/system/config/schema/system.schema.yml
@@ -258,6 +258,9 @@ system.action.*:
     plugin:
       type: string
       label: 'Plugin'
+    weight:
+      type: integer
+      label: 'Weight'
     configuration:
       type: action.configuration.[%parent.plugin]
 
diff --git a/core/modules/system/src/Entity/Action.php b/core/modules/system/src/Entity/Action.php
index a412838..b4f563e 100644
--- a/core/modules/system/src/Entity/Action.php
+++ b/core/modules/system/src/Entity/Action.php
@@ -25,6 +25,7 @@
  *     "label",
  *     "type",
  *     "plugin",
+ *     "weight",
  *     "configuration",
  *   }
  * )
@@ -67,6 +68,13 @@ class Action extends ConfigEntityBase implements ActionConfigEntityInterface, En
   protected $plugin;
 
   /**
+   * The weight of the action.
+   *
+   * @var int
+   */
+  protected $weight;
+
+  /**
    * The plugin collection that stores action plugins.
    *
    * @var \Drupal\Core\Action\ActionPluginCollection
@@ -137,6 +145,15 @@ public function getType() {
   }
 
   /**
+   * Returns the weight of operation.
+   *
+   * @return int
+   */
+  public function getWeight() {
+    return $this->weight;
+  }
+
+  /**
    * {@inheritdoc}
    */
   public static function sort(ConfigEntityInterface $a, ConfigEntityInterface $b) {
diff --git a/core/modules/system/system.install b/core/modules/system/system.install
index 0fd4b26..06022c1 100644
--- a/core/modules/system/system.install
+++ b/core/modules/system/system.install
@@ -2105,3 +2105,39 @@ function system_update_8501() {
     }
   }
 }
+
+/**
+ * Set weights to actions.
+ */
+function node_update_8601() {
+  // List of node actions.
+  $node_actions_default_weight = [
+    'system.action.node_make_sticky_action' => -7,
+    'system.action.node_make_unsticky_action' => -6,
+    'system.action.node_promote_action' => -5,
+    'system.action.node_unpromote_action' => -4,
+    'system.action.node_publish_action' => -3,
+    'system.action.node_unpublish_action' => -2,
+    'system.action.node_delete_action' => -1,
+    'system.action.node_save_action' => 0,
+  ];
+
+  $config_factory = \Drupal::configFactory();
+
+  // Find all system action configs.
+  foreach ($config_factory->listAll('system.action.') as $action_name) {
+    $action = $config_factory->getEditable($action_name);
+    $data = $action->getRawData();
+
+    // Set appropriate weights to node actions, otherwise set 0 as default
+    // weight for other actions.
+    if (array_key_exists($action_name, $node_actions_default_weight)) {
+      $data['weight'] = $node_actions_default_weight[$action_name];
+    }
+    else {
+      $data['weight'] = 0;
+    }
+    $action->setData($data);
+    $action->save();
+  }
+}
diff --git a/core/modules/user/config/install/system.action.user_block_user_action.yml b/core/modules/user/config/install/system.action.user_block_user_action.yml
index d9753bc..1ef190f 100644
--- a/core/modules/user/config/install/system.action.user_block_user_action.yml
+++ b/core/modules/user/config/install/system.action.user_block_user_action.yml
@@ -7,4 +7,5 @@ id: user_block_user_action
 label: 'Block the selected user(s)'
 type: user
 plugin: user_block_user_action
+weight: 0
 configuration: {  }
diff --git a/core/modules/user/config/install/system.action.user_cancel_user_action.yml b/core/modules/user/config/install/system.action.user_cancel_user_action.yml
index cd90ff2..fd4c4a2 100644
--- a/core/modules/user/config/install/system.action.user_cancel_user_action.yml
+++ b/core/modules/user/config/install/system.action.user_cancel_user_action.yml
@@ -7,4 +7,5 @@ id: user_cancel_user_action
 label: 'Cancel the selected user account(s)'
 type: user
 plugin: user_cancel_user_action
+weight: 0
 configuration: {  }
diff --git a/core/modules/user/config/install/system.action.user_unblock_user_action.yml b/core/modules/user/config/install/system.action.user_unblock_user_action.yml
index 406edb2..1d11dd7 100644
--- a/core/modules/user/config/install/system.action.user_unblock_user_action.yml
+++ b/core/modules/user/config/install/system.action.user_unblock_user_action.yml
@@ -7,4 +7,5 @@ id: user_unblock_user_action
 label: 'Unblock the selected user(s)'
 type: user
 plugin: user_unblock_user_action
+weight: 0
 configuration: {  }
